Destroy secondary dialogs if the main dialog is hidden. (#155084, Paolo
authorMatthias Clasen <mclasen@redhat.com>
Sun, 17 Oct 2004 06:38:35 +0000 (06:38 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 17 Oct 2004 06:38:35 +0000 (06:38 +0000)
2004-10-17  Matthias Clasen  <mclasen@redhat.com>

* gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
dialogs if the main dialog is hidden. (#155084, Paolo Borelli)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkaboutdialog.c

index 338f7391f00637f4d3cf070170243028a20ca400..da193c8a191b3456788c6436a06bf7838409f164 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
+       dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
+
 2004-10-16  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak
index 338f7391f00637f4d3cf070170243028a20ca400..da193c8a191b3456788c6436a06bf7838409f164 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
+       dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
+
 2004-10-16  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak
index 338f7391f00637f4d3cf070170243028a20ca400..da193c8a191b3456788c6436a06bf7838409f164 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
+       dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
+
 2004-10-16  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak
index 338f7391f00637f4d3cf070170243028a20ca400..da193c8a191b3456788c6436a06bf7838409f164 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-17  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtkaboutdialog.c (gtk_about_dialog_new): Destroy secondary
+       dialogs if the main dialog is hidden. (#155084, Paolo Borelli)
+
 2004-10-16  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkaboutdialog.c (gtk_about_dialog_destroy): Don't leak
index 12037e0937b3b1698fb90a9b0f5962bbd7712e34..b345c640cd6de2b601653874ea1c11c3194825e3 100644 (file)
@@ -114,7 +114,6 @@ static void                 gtk_about_dialog_set_property   (GObject
                                                             guint               prop_id,
                                                             const GValue       *value,
                                                             GParamSpec         *pspec);
-static void                 gtk_about_dialog_destroy        (GtkObject          *object);
 static void                 update_name_version             (GtkAboutDialog     *about);
 static GtkIconSet *         icon_set_new_from_pixbufs       (GList              *pixbufs);
 static void                 activate_url                    (GtkWidget          *widget,
@@ -180,7 +179,6 @@ gtk_about_dialog_class_init (GtkAboutDialogClass *klass)
   object_class->get_property = gtk_about_dialog_get_property;
 
   object_class->finalize = gtk_about_dialog_finalize;
-  ((GtkObjectClass *)klass)->destroy = gtk_about_dialog_destroy;
 
   g_object_class_install_property (object_class,
                                   PROP_NAME,
@@ -404,26 +402,6 @@ gtk_about_dialog_finalize (GObject *object)
   G_OBJECT_CLASS (gtk_about_dialog_parent_class)->finalize (object);
 }
 
-static void
-gtk_about_dialog_destroy (GtkObject *object)
-{
-  GtkAboutDialog *about = GTK_ABOUT_DIALOG (object);
-  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
-
-  if (priv->credits_dialog)
-    {
-      gtk_widget_destroy (priv->credits_dialog);
-      priv->credits_dialog = NULL;
-    }
-  if (priv->license_dialog)
-    {
-      gtk_widget_destroy (priv->license_dialog);
-      priv->license_dialog = NULL;
-    }
-
-  GTK_OBJECT_CLASS (gtk_about_dialog_parent_class)->destroy (object);
-}
-
 static void
 gtk_about_dialog_set_property (GObject      *object, 
                               guint         prop_id, 
@@ -1786,6 +1764,27 @@ display_license_dialog (GtkWidget *button,
   gtk_widget_show_all (dialog);
 }
 
+static void 
+close_cb (GtkAboutDialog *about)
+{
+  GtkAboutDialogPrivate *priv = (GtkAboutDialogPrivate *)about->private_data;
+
+  if (priv->license_dialog != NULL)
+    {
+      gtk_widget_destroy (priv->license_dialog);
+      priv->license_dialog = NULL;
+    }
+
+  if (priv->credits_dialog != NULL)
+    {
+      gtk_widget_destroy (priv->credits_dialog);
+      priv->credits_dialog = NULL;
+    }
+
+  gtk_widget_hide (GTK_WIDGET (about));
+  
+}
+
 /**
  * gtk_about_dialog_new:
  *
@@ -1807,7 +1806,7 @@ gtk_about_dialog_new (void)
   /* Close dialog on user response */
   g_signal_connect (G_OBJECT (dialog),
                     "response",
-                    G_CALLBACK (gtk_widget_hide),
+                    G_CALLBACK (close_cb),
                     NULL);
 
   return GTK_WIDGET (dialog);